From: Stéphane Démurget Date: Thu, 8 Nov 2012 14:24:40 +0000 (+0100) Subject: messageTray: Add a notification focus keybinding X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5460 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7dc235511e5e4624578fc38900185953080ecc00;p=gnome-shell.git messageTray: Add a notification focus keybinding At the moment, only the mouse can be used to focus and answer a chat notification. This adds a new keybinding (defaults to +n) to focus and expand the active notification. https://bugzilla.gnome.org/show_bug.cgi?id=652082 --- diff --git a/data/50-gnome-shell-system.xml.in b/data/50-gnome-shell-system.xml.in index cb468f934..92858c59d 100644 --- a/data/50-gnome-shell-system.xml.in +++ b/data/50-gnome-shell-system.xml.in @@ -8,6 +8,9 @@ + + diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in index e18685e9c..eaeb01aae 100644 --- a/data/org.gnome.shell.gschema.xml.in.in +++ b/data/org.gnome.shell.gschema.xml.in.in @@ -106,6 +106,13 @@ value here is from the GsmPresenceStatus enumeration. Keybinding to toggle the visibility of the message tray. + + ["<Super>n"] + <_summary>Keybinding to focus the active notification + <_description> + Keybinding to focus the active notification. + + r']]]> <_summary>Keybinding to toggle the screen recorder diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 2bbdfe8b6..2f714b0b4 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1519,6 +1519,10 @@ const MessageTray = new Lang.Class({ new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }), Meta.KeyBindingFlags.NONE, Lang.bind(this, this.toggleAndNavigate)); + global.display.add_keybinding('focus-active-notification', + new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }), + Meta.KeyBindingFlags.NONE, + Lang.bind(this, this._expandActiveNotification)); this._summaryItems = []; this._chatSummaryItemsCount = 0; @@ -2338,6 +2342,13 @@ const MessageTray = new Lang.Class({ notification.destroy(NotificationDestroyedReason.EXPIRED); }, + _expandActiveNotification: function() { + if (!this._notification) + return; + + this._expandNotification(false); + }, + _expandNotification: function(autoExpanding) { // Don't grab focus in notifications that are auto-expanded. if (!autoExpanding)